// Promise有哪些对象方法
// console.log(Object.getOwnPropertyDescriptors(Promise.prototype));

const promise = new Promise((resolve, reject) => {
  resolve("hahahaha");
});

// 1. 同一个Promise可以被多次调用then方法
// promise.then((res) => {
//   console.log("res1:", res);
// });

// promise.then((res) => {
//   console.log("res2:", res);
// });

// promise.then((res) => {
//   console.log("res3:", res);
// });

// 2. then方法传入的 回调函数 可以有返回值
// then方法本身也是有返回值的，它的返回值是Promise

// 1> 如果我们返回的是一个普通值，那么这个普通的值被作为一个新的Promise的resolve值
// promise
//   .then((res) => {
//     return "aaaa";
//   })
//   .then((res) => {
//     console.log(res);
//   });

// 2> 如果返回的是一个Promise
// promise
//   .then((res) => {
//     return new Promise((resolve, reject) => {
//       setTimeout(() => {
//         resolve(1111);
//       }, 3000);
//     });
//   })
//   .then((res) => {
//     console.log("res:", res);
//   });

// 3> 如果返回的是一个对象，并且该对象实现了thenable
promise
  .then((res) => {
    return {
      then: function (resolve, reject) {
        resolve(22222);
      },
    };
  })
  .then((res) => {
    console.log("res:", res);
  });
